// @ts-ignore
/* eslint-disable */
import { request } from '@umijs/max';

/**
 * 发送AI聊天请求并获取流式响应
 * 
 * @param params 聊天参数
 * @param options 请求选项
 * @returns 聊天响应内容数组
 */
export async function chat(
  params: API.chatParams,
  options?: { [key: string]: any },
) {
  const { modelType: param0, ...queryParams } = params;
  return request<string[]>(`/api/ai/chat/${param0}`, {
    method: 'GET',
    params: {
      // 默认参数
      temperature: '0.7',      // 响应温度，影响随机性
      maxTokens: '2048',       // 最大生成长度
      agentType: 'CHAT',       // 默认会话类型
      ...queryParams,
    },
    ...(options || {}),
  });
}

/**
 * 创建新的聊天会话
 * 
 * @param params 创建聊天参数
 * @param options 请求选项
 * @returns 创建的聊天ID
 */
export async function createNewChat(
  params: API.createNewChatParams,
  options?: { [key: string]: any },
) {
  return request<API.BaseResponseString>('/api/ai/chat/create-new-chat', {
    method: 'POST',
    params: {
      // 默认参数
      agentType: 'CHAT',       // 默认会话类型
      ...params,
    },
    ...(options || {}),
  });
}

/**
 * 获取特定类型的聊天会话ID列表
 * 
 * @param params 会话类型参数
 * @param options 请求选项
 * @returns 聊天ID数组
 */
export async function getChatIdListByAgentType(
  params: API.getChatIdListByAgentTypeParams,
  options?: { [key: string]: any },
) {
  const { type: param0, ...queryParams } = params;
  return request<API.BaseResponseListString>(`/api/ai/chatId/${param0}`, {
    method: 'GET',
    params: { ...queryParams },
    ...(options || {}),
  });
}

/**
 * 获取指定聊天会话的历史消息
 * 
 * @param params 聊天ID参数
 * @param options 请求选项
 * @returns 聊天消息数组
 */
export async function getChatHistoryByChatId(
  params: API.getChatHistoryByChatIdParams,
  options?: { [key: string]: any },
) {
  const { chatId: param0, ...queryParams } = params;
  return request<API.BaseResponseListMessageVO>(`/api/ai/history/${param0}`, {
    method: 'GET',
    params: { ...queryParams },
    ...(options || {}),
  });
}

/**
 * 获取系统支持的AI模型列表
 * 
 * @param options 请求选项
 * @returns 模型名称数组
 */
export async function getSupportedModels(options?: { [key: string]: any }) {
  return request<API.BaseResponseListString>('/api/ai/models', {
    method: 'GET',
    ...(options || {}),
  });
}

/**
 * 获取指定聊天会话的详细信息
 * 
 * @param params 聊天ID参数
 * @param options 请求选项
 * @returns 聊天会话详情
 */
export async function getChatSessionInfo(
  params: API.getChatSessionInfoParams,
  options?: { [key: string]: any },
) {
  const { chatId: param0, ...queryParams } = params;
  return request<API.BaseResponseChatSessionInfoDTO>(`/api/ai/session/info/${param0}`, {
    method: 'GET',
    params: { ...queryParams },
    ...(options || {}),
  });
}

/**
 * 批量获取指定类型的聊天会话信息
 * 
 * @param params 会话类型参数
 * @param options 请求选项
 * @returns 聊天会话详情数组
 */
export async function getChatSessionInfoBatch(
  params: API.getChatSessionInfoBatchParams,
  options?: { [key: string]: any },
) {
  return request<API.BaseResponseListChatSessionInfoDTO>('/api/ai/session/info/batch', {
    method: 'GET',
    params: {
      // 默认参数
      agentType: 'CHAT',       // 默认会话类型
      ...params,
    },
    ...(options || {}),
  });
}

/**
 * 删除聊天会话
 * 
 * @param params 聊天ID参数
 * @param options 请求选项
 * @returns 删除结果
 */
export async function deleteChat(params: {
  chatId: string;
}, options?: { [key: string]: any }) {
  const { chatId } = params;
  return request<API.BaseResponseBoolean>(`/api/ai/session/${chatId}`, {
    method: 'DELETE',
    ...(options || {}),
  });
}
